﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace Cafe_htc
{
    public partial class QuanLyKhuVuc : Form
    {
        public QuanLyKhuVuc()
        {
            InitializeComponent();
        }

        private void HienThiDanhSachKhuVuc()
        {
            dgvKhuVuc.Rows.Clear();

            List<KhuVucDTO> dsKhuVuc = KhuVucBUS.LayDanhSachKhuVuc();
            int count = dsKhuVuc.Count;
            for (int i = 0; i < count; ++i)
            {
                dgvKhuVuc.Rows.Add(dsKhuVuc[i].TenKhuVuc, dsKhuVuc[i].SoLuongBan);
            }
        }

        private void CapNhatSoLuongBan(KhuVucDTO khuvuc)
        {
            // Xóa tất cả bàn thuộc khu vực này...
            if (BanBUS.XoaBan(khuvuc))
            {
                int count = khuvuc.SoLuongBan;
                for (int i = 0; i < count; )
                {
                    BanDTO ban = new BanDTO();
                    ban.TenBan = "Bàn " + (++i).ToString();
                    ban.KhuVuc = khuvuc;
                    BanBUS.ThemBan(ban);
                }
            }
        }

        private void QuanLyKhuVuc_Load(object sender, EventArgs e)
        {
            // Check radiobutton Xóa KV...
            rbtnXoaKV.Checked = true;
            rbtnXoaKV_CheckedChanged(sender, e);

            // Hiển thị danh sách khu vực vào bảng...
            HienThiDanhSachKhuVuc();
        }

        private void dgvKhuVuc_SelectionChanged(object sender, EventArgs e)
        {
            if (rbtnThemKV.Checked == false)
            {
                KhuVucDTO khuvuc = KhuVucBUS.LayThongTinKhuVuc(dgvKhuVuc.CurrentRow.Cells[0].Value.ToString());
                if (khuvuc != null)
                {
                    tbxKhuVuc.Text = khuvuc.TenKhuVuc;
                    nudSoLuongBan.Value = khuvuc.SoLuongBan;
                }
            }
        }

        private void rbtnThemKV_CheckedChanged(object sender, EventArgs e)
        {
            // Cho phép người dùng nhập thông tin khu vực...
            tbxKhuVuc.ReadOnly = false;
            nudSoLuongBan.ReadOnly = false;

            tbxKhuVuc.Text = "";
            nudSoLuongBan.Value = 0;

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Nhập đầy đủ thông tin khu vực vào bảng Thông Tin Khu Vực." + "\r\n\r\n" + "* Bước 2: Bấm nút Chấp Nhận để thêm khu vực này vào Danh Sách Khu Vực.";

            // Hiển thị button Help...
            btnHelp.Visible = true;
        }

        private void rbtnXoaKV_CheckedChanged(object sender, EventArgs e)
        {
            // Chỉ cho người dùng xem thông tin, không cho người dùng chỉnh sửa...
            tbxKhuVuc.ReadOnly = true;
            nudSoLuongBan.ReadOnly = true;

            tbxKhuVuc.Text = "";
            nudSoLuongBan.Value = 0;

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Chọn khu vực mà bạn muốn xóa ở bảng Danh Sách Khu Vực. Thông tin của khu vực này sẽ được hiển thị ở bảng Thông Tin Khu Vực." + "\r\n\r\n" + "* Bước 2: Bấm nút Chấp Nhận để xóa.";

            // Ẩn button Help...
            btnHelp.Visible = false;
        }

        private void rbtnCapNhat_CheckedChanged(object sender, EventArgs e)
        {
            // Chỉ cho người dùng xem thông tin, không cho người dùng chỉnh sửa...
            tbxKhuVuc.ReadOnly = false;
            nudSoLuongBan.ReadOnly = false;

            tbxKhuVuc.Text = "";
            nudSoLuongBan.Value = 0;

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Chọn khu vực mà bạn muốn cập nhật lại ở bảng Danh Sách Khu Vực. Thông tin của khu vực này sẽ được hiển thị ở bảng Thông Tin Khu Vực." + "\r\n\r\n" + "* Bước 2: Sau khi chỉnh sửa xong thông tin, bạn bấm nút Chấp Nhận để cập nhật lại.";

            // Ẩn button Help...
            btnHelp.Visible = false;
        }

        private void btnChapNhan_Click(object sender, EventArgs e)
        {
            string strtemp = tbxKhuVuc.Text.ToString();
            if (strtemp == "")
            {
                MessageBox.Show("Tên khu vực không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                int lentemp = strtemp.Length;
                if (lentemp > 100 || lentemp < 3)
                {
                    MessageBox.Show("Tên khu vực: Tên của khu vực, chiều dài từ 3-100 ký tự.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    tbxKhuVuc.Text = "";
                }
                else
                {
                    int i = 0;
                    int index = 0;

                    strtemp = nudSoLuongBan.Value.ToString();
                    if (strtemp == "")
                    {
                        MessageBox.Show("Số lượng bàn không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        lentemp = strtemp.Length;
                        do
                        {
                            int a = (int)strtemp[i];
                            if (a < 48 || a > 57)
                                index = 1;

                            ++i;
                        }
                        while (index == 0 && i < lentemp);

                        if (i < lentemp || nudSoLuongBan.Value > 100 || nudSoLuongBan.Value < 0)
                        {
                            MessageBox.Show("Số lượng bàn là một số tự nhiên, có giá trị từ 0-100.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            nudSoLuongBan.Value = 0;
                        }
                        else
                        {
                            if (rbtnThemKV.Checked == true)
                            {
                                // Khi radiobutton Thêm KV được chọn...
                                KhuVucDTO khuvuc = new KhuVucDTO();
                                khuvuc.TenKhuVuc = tbxKhuVuc.Text.Trim();
                                khuvuc.SoLuongBan = int.Parse(nudSoLuongBan.Value.ToString());

                                if (KhuVucBUS.ThemKhuVuc(khuvuc))
                                {
                                    MessageBox.Show("Đã thêm thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                    // Cập nhật lại danh sách khu vực trong bảng Danh Sách Khu Vực...
                                    HienThiDanhSachKhuVuc();

                                    // Cập nhật lại danh sách bàn cho khu vực này...
                                    khuvuc = KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text.Trim());
                                    CapNhatSoLuongBan(khuvuc);

                                    tbxKhuVuc.Text = "";
                                    nudSoLuongBan.Value = 0;
                                }
                                else
                                    MessageBox.Show("Thêm không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);


                            }
                            else
                            {
                                if (rbtnXoaKV.Checked == true)
                                {
                                    // Khi radiobutton Xóa KV được chọn...
                                    if (MessageBox.Show("Bạn có chắc chắn muốm xóa hay không?...", "Thông báo!...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                    {
                                        if (KhuVucBUS.XoaKhuVuc(tbxKhuVuc.Text.Trim()))
                                        {
                                            MessageBox.Show("Đã xóa thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                            // Cập nhật lại danh sách khu vực trong bảng Danh Sách Khu Vực...
                                            HienThiDanhSachKhuVuc();

                                            // Xóa tất cả bàn trong khu vực này...
                                            BanBUS.XoaBan(KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text.Trim()));

                                            tbxKhuVuc.Text = "";
                                            nudSoLuongBan.Value = 0;
                                        }
                                        else
                                            MessageBox.Show("Xóa không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                                else
                                {
                                    // Khi radiobutton Cập Nhật được chọn...
                                    KhuVucDTO khuvuc = KhuVucBUS.LayThongTinKhuVuc(dgvKhuVuc.CurrentRow.Cells[0].Value.ToString());
                                    khuvuc.TenKhuVuc = tbxKhuVuc.Text.Trim();
                                    khuvuc.SoLuongBan = int.Parse(nudSoLuongBan.Value.ToString());

                                    if (KhuVucBUS.SuaThongTinKV(khuvuc))
                                    {
                                        MessageBox.Show("Đã cập nhật thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                        // Cập nhật lại danh sách tài khoản trong bảng Danh Sách Tài Khoản...
                                        HienThiDanhSachKhuVuc();

                                        // Cập nhật danh sách bàn cho khu vực này...
                                        CapNhatSoLuongBan(khuvuc);

                                        tbxKhuVuc.Text = "";
                                        nudSoLuongBan.Value = 0;
                                    }
                                    else
                                        MessageBox.Show("Cập nhật không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                        }
                    }
                }
            }
        }

        private void btnHelp_Click(object sender, EventArgs e)
        {
            tbxHuongDan.Text = "* Tên khu vực: Tên của khu vực, chiều dài tối đa là 100 ký tự." + "\r\n\r\n" + "* Số lượng bàn: có giá trị từ -1 -> 100.";
        }

        private void btnXong_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
